package com.huluobo.a2308douyindemo.demo

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.huluobo.a2308douyindemo.R
import com.huluobo.a2308douyindemo.databinding.ActivityViewBindingBinding

/**
 * ViewBinding总结
 * 1.使用时需要在app的build.gradle中添加开关,viewBinding {enable =true}
 * 2.开启后所有的xml都会对应生成一个类,由xml的文件名生成的驼峰命名法的类,后缀加上binding
 * 3.setContentView binding.root 这个方法中不能直接使用Layout的id,需要使用binding.root来指定布局
 * 4.ViewBinding的特点,视图(View)绑定会对视图直接引用,不需要声明
 * 5.具有类型安全性,不需要进行指定类型或者强制转换,可以自动匹配xml中控件的类型,比如xml中是个textView,在代码中引用的时候就是一个TextView,不需要声明
 */
class ViewBindingActivity : AppCompatActivity() {

    //ActivityViewBinding 是对应xml的名字  Binding 是系统添加的
    //打开ViewBinding开关之后,所有的xml都会产生一个后缀加上Binding的类,直接点进去可以跳转到xml页面中
    private lateinit var binding: ActivityViewBindingBinding
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        //给binding赋值,通过类的inflate填入
        binding = ActivityViewBindingBinding.inflate(layoutInflater)
        //设置页面布局是binding的最外层的view,也就是LinearLayout
        setContentView(binding.root)

        binding.login.setOnClickListener {
            val username = binding.username.text.toString()
            val password = binding.password.text.toString()

            binding.userTv.text = "$username ,$password"
        }

        binding.clear.setOnClickListener {
            binding.username.text.clear()
            binding.password.text.clear()
        }

    }
}